# uncompyle6 version 3.2.3
# Python bytecode 3.6 (3379)
# Decompiled from: Python 3.6.8 |Anaconda custom (64-bit)| (default, Feb 21 2019, 18:30:04) [MSC v.1916 64 bit (AMD64)]
# Embedded file name: opcode.py
"""
opcode module - potentially shared between dis and other modules which
operate on bytecodes (e.g. peephole optimizers).
"""
__all__ = [
    "cmp_op",
    "hasconst",
    "hasname",
    "hasjrel",
    "hasjabs",
    "haslocal",
    "hascompare",
    "hasfree",
    "opname",
    "opmap",
    "HAVE_ARGUMENT",
    "EXTENDED_ARG",
    "hasnargs",
]
try:
    from _opcode import stack_effect

    __all__.append("stack_effect")
except ImportError:
    pass

cmp_op = (
    "<",
    "<=",
    "==",
    "!=",
    ">",
    ">=",
    "in",
    "not in",
    "is",
    "is not",
    "exception match",
    "BAD",
)
hasconst = []
hasname = []
hasjrel = []
hasjabs = []
haslocal = []
hascompare = []
hasfree = []
hasnargs = []
opmap = {}
opname = ["<%r>" % (op,) for op in range(256)]


def def_op(name, op):
    opname[op] = name
    opmap[name] = op


def name_op(name, op):
    def_op(name, op)
    hasname.append(op)


def jrel_op(name, op):
    def_op(name, op)
    hasjrel.append(op)


def jabs_op(name, op):
    def_op(name, op)
    hasjabs.append(op)


def_op("POP_TOP", 1)
def_op("ROT_TWO", 2)
def_op("ROT_THREE", 3)
def_op("DUP_TOP", 4)
def_op("DUP_TOP_TWO", 5)
def_op("NOP", 9)
def_op("UNARY_POSITIVE", 10)
def_op("UNARY_NEGATIVE", 11)
def_op("UNARY_NOT", 12)
def_op("UNARY_INVERT", 15)
def_op("BINARY_MATRIX_MULTIPLY", 16)
def_op("INPLACE_MATRIX_MULTIPLY", 17)
def_op("BINARY_POWER", 19)
def_op("BINARY_MULTIPLY", 20)
def_op("BINARY_MODULO", 22)
def_op("BINARY_ADD", 23)
def_op("BINARY_SUBTRACT", 24)
def_op("BINARY_SUBSCR", 25)
def_op("BINARY_FLOOR_DIVIDE", 26)
def_op("BINARY_TRUE_DIVIDE", 27)
def_op("INPLACE_FLOOR_DIVIDE", 28)
def_op("INPLACE_TRUE_DIVIDE", 29)
def_op("GET_AITER", 50)
def_op("GET_ANEXT", 51)
def_op("BEFORE_ASYNC_WITH", 52)
def_op("INPLACE_ADD", 55)
def_op("INPLACE_SUBTRACT", 56)
def_op("INPLACE_MULTIPLY", 57)
def_op("INPLACE_MODULO", 59)
def_op("STORE_SUBSCR", 60)
def_op("DELETE_SUBSCR", 61)
def_op("BINARY_LSHIFT", 62)
def_op("BINARY_RSHIFT", 63)
def_op("BINARY_AND", 64)
def_op("BINARY_XOR", 65)
def_op("BINARY_OR", 66)
def_op("INPLACE_POWER", 67)
def_op("GET_ITER", 68)
def_op("GET_YIELD_FROM_ITER", 69)
def_op("PRINT_EXPR", 70)
def_op("LOAD_BUILD_CLASS", 71)
def_op("YIELD_FROM", 72)
def_op("GET_AWAITABLE", 73)
def_op("INPLACE_LSHIFT", 75)
def_op("INPLACE_RSHIFT", 76)
def_op("INPLACE_AND", 77)
def_op("INPLACE_XOR", 78)
def_op("INPLACE_OR", 79)
def_op("BREAK_LOOP", 80)
def_op("WITH_CLEANUP_START", 81)
def_op("WITH_CLEANUP_FINISH", 82)
def_op("RETURN_VALUE", 83)
def_op("IMPORT_STAR", 84)
def_op("SETUP_ANNOTATIONS", 85)
def_op("YIELD_VALUE", 86)
def_op("POP_BLOCK", 87)
def_op("END_FINALLY", 88)
def_op("POP_EXCEPT", 89)
HAVE_ARGUMENT = 90
name_op("STORE_NAME", 90)
name_op("DELETE_NAME", 91)
def_op("UNPACK_SEQUENCE", 92)
jrel_op("FOR_ITER", 93)
def_op("UNPACK_EX", 94)
name_op("STORE_ATTR", 95)
name_op("DELETE_ATTR", 96)
name_op("STORE_GLOBAL", 97)
name_op("DELETE_GLOBAL", 98)
def_op("LOAD_CONST", 100)
hasconst.append(100)
name_op("LOAD_NAME", 101)
def_op("BUILD_TUPLE", 102)
def_op("BUILD_LIST", 103)
def_op("BUILD_SET", 104)
def_op("BUILD_MAP", 105)
name_op("LOAD_ATTR", 106)
def_op("COMPARE_OP", 107)
hascompare.append(107)
name_op("IMPORT_NAME", 108)
name_op("IMPORT_FROM", 109)
jrel_op("JUMP_FORWARD", 110)
jabs_op("JUMP_IF_FALSE_OR_POP", 111)
jabs_op("JUMP_IF_TRUE_OR_POP", 112)
jabs_op("JUMP_ABSOLUTE", 113)
jabs_op("POP_JUMP_IF_FALSE", 114)
jabs_op("POP_JUMP_IF_TRUE", 115)
name_op("LOAD_GLOBAL", 116)
jabs_op("CONTINUE_LOOP", 119)
jrel_op("SETUP_LOOP", 120)
jrel_op("SETUP_EXCEPT", 121)
jrel_op("SETUP_FINALLY", 122)
def_op("LOAD_FAST", 124)
haslocal.append(124)
def_op("STORE_FAST", 125)
haslocal.append(125)
def_op("DELETE_FAST", 126)
haslocal.append(126)
name_op("STORE_ANNOTATION", 127)
def_op("RAISE_VARARGS", 130)
def_op("CALL_FUNCTION", 131)
def_op("MAKE_FUNCTION", 132)
def_op("BUILD_SLICE", 133)
def_op("LOAD_CLOSURE", 135)
hasfree.append(135)
def_op("LOAD_DEREF", 136)
hasfree.append(136)
def_op("STORE_DEREF", 137)
hasfree.append(137)
def_op("DELETE_DEREF", 138)
hasfree.append(138)
def_op("CALL_FUNCTION_KW", 141)
def_op("CALL_FUNCTION_EX", 142)
jrel_op("SETUP_WITH", 143)
def_op("LIST_APPEND", 145)
def_op("SET_ADD", 146)
def_op("MAP_ADD", 147)
def_op("LOAD_CLASSDEREF", 148)
hasfree.append(148)
def_op("EXTENDED_ARG", 144)
EXTENDED_ARG = 144
def_op("BUILD_LIST_UNPACK", 149)
def_op("BUILD_MAP_UNPACK", 150)
def_op("BUILD_MAP_UNPACK_WITH_CALL", 151)
def_op("BUILD_TUPLE_UNPACK", 152)
def_op("BUILD_SET_UNPACK", 153)
jrel_op("SETUP_ASYNC_WITH", 154)
def_op("FORMAT_VALUE", 155)
def_op("BUILD_CONST_KEY_MAP", 156)
def_op("BUILD_STRING", 157)
def_op("BUILD_TUPLE_UNPACK_WITH_CALL", 158)
del def_op
del name_op
del jrel_op
del jabs_op
